package com.hanqian.kepler.core.service.core;

import com.hanqian.kepler.common.bean.result.AjaxResult;
import com.hanqian.kepler.core.entity.primary.core.Target;
import com.hanqian.kepler.core.service.flow.BaseFlowService;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * newFile
 * ============================================================================
 * author : dzw
 * createDate:  2020/12/21 。
 * ============================================================================
 */
public interface TargetService extends BaseFlowService<Target> {

	/**
	 * 获取到本次新创建指标的标号
	 */
	String getNewTargetNo(Date date);

	/**
	 * 通过ids或得到names
	 */
	String getNamesByIds(String ids);

	/**
	 * 更新关联指标，需要双向关联
	 * @param target 进行操作的指标卡片
	 * @param newRelatedTargetIds 新关联指标卡片的ids（完整的ids 包括老的）
	 */
	void updateRelatedTarget(Target target, String newRelatedTargetIds);

	/**
	 * 查看次数 +1
	 */
	void addReadCount(Target target);

	/**
	 * 获取指标标签数量
	 */
	int getTargetLabelCount();

	/**
	 * 更新父级指标
	 * @param target 进行操作的指标卡片
	 * @param newParentTargetId 父级指标id
	 */
	void updateParentTarget(Target target, String newParentTargetId);

	/**
	 * 获取一个指标下的所有子级（包括跨级别的）
	 */
	List<String> findAllSonList(String targetId);

	/**
	 * 获取树结构
	 */
	List<Map<String, String>> getTree();
	List<Map<String, String>> getTreeByTargetClass(String targetClassId);

}
